﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace Sinacor.Infra.Common.Exceptions.FaultContracts
{
    /// <summary>
    /// Falta base para todas as faltas
    /// </summary>
    [DataContract(Namespace = "http://www.sinacor.com.br/Sinacor.Infra.Common.Exceptions.FaultContracts")]
    public abstract class BaseFault
    {
        private string _message;
        /// <summary>
        /// Mensagem de erro
        /// </summary>
        [DataMember]
        public string Message
        {
            get { return _message; }
            set { _message = value; }
        }

        /// <summary>
        /// Cria instância da exceção
        /// </summary>
        /// <returns>Instância da exceção</returns>
        protected abstract BaseException CreateExceptionInstance();

        /// <summary>
        /// Cria uma exceção a partir da falta
        /// </summary>
        /// <returns>Exceção com o erro</returns>
        public abstract BaseException CreateException();
    }
}
